import logging

from PySide6.QtCore import Qt, QCoreApplication
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QMainWindow, QToolBar, QStatusBar, QFileDialog, QMessageBox

from 程序核心代码.操作行为.打开文件操作 import 文件打开操作

# 配置日志记录器
logging.basicConfig(level=logging.WARNING, format='%(asctime)s - %(levelname)s - %(message)s')
日志记录器 = logging.getLogger(__name__)

class 主窗口(QMainWindow):
    def __init__(self, 父对象=None):
        super().__init__(父对象)
        self.调试模式 = False  # 设置调试模式开关

        # 设置日志等级
        if self.调试模式:
            日志记录器.setLevel(logging.DEBUG)
            日志记录器.debug(f"{self.__class__.__name__}调试模式已开启")
        else:
            日志记录器.setLevel(logging.ERROR)

        日志记录器.info("主窗口初始化")
        
        # 创建OpenGLWidget作为中心窗口部件
        self._初始界面()
        self.文件操作 = 文件打开操作(self)  # 创建文件操作类的实例
        快速测试示例文件=r"C:\Users\fengm\PycharmProjects\星火图流编程\测试项目\示例代码.py"
        self.文件操作.打开文件(快速测试示例文件)
        # 初始化菜单栏、工具栏和状态栏

    def _初始界面(self):
        self.菜单栏 = self.menuBar()
        self._初始菜单栏()
        self.状态栏 = QStatusBar(self)
        self._初始状态栏()
        self.工具栏 = QToolBar("工具栏", self)
        self._初始工具栏()

    def _初始菜单栏(self):
        """创建菜单栏"""
        文件菜单 = self.菜单栏.addMenu("文件")
        # 打开文件动作
        打开文件动作 = QAction("打开文件", self)
        打开文件动作.triggered.connect(self.打开文件)
        文件菜单.addAction(打开文件动作)

    def _初始状态栏(self):
        """创建状态栏"""
        self.setStatusBar(self.状态栏)
        self.状态栏.showMessage("准备就绪")

    def _初始工具栏(self):
        """创建工具栏"""
        self.addToolBar(Qt.TopToolBarArea, self.工具栏)
        # 添加打开文件的动作到工具栏
        打开动作 = QAction("工具栏占位", self)
        self.工具栏.addAction(打开动作)

    def 打开文件(self):
        """打开文件"""
        日志记录器.info("打开文件操作被触发")
        文件绝对路径, _ = QFileDialog.getOpenFileName(self, "打开文件", "", "所有文件 (*)")
        if 文件绝对路径:
            日志记录器.info("尝试打开文件: %s", 文件绝对路径)
            self.状态栏.showMessage("正在尝试打开文件")
            self.文件操作.打开文件(文件绝对路径)  # 调用文件操作类的打开文件方法
        else:
            日志记录器.warning("未选择任何文件")

    def 文件已打开(self, 文件名):
        """处理文件已打开信号的槽"""
        日志记录器.info("文件已打开: %s", 文件名)
        QMessageBox.information(self, "文件打开", f"已成功打开文件: {文件名}")

    def 打开项目(self):
        """打开文件夹（项目）"""
        文件夹路径 = QFileDialog.getExistingDirectory(self, "打开项目")
        if 文件夹路径:
            日志记录器.info("打开项目: %s", 文件夹路径)
            QMessageBox.information(self, "选择结果", f"你选择了文件夹: {文件夹路径}")
        else:
            日志记录器.warning("未选择任何文件夹")

if __name__ == "__main__":
    import sys
    from PySide6.QtWidgets import QApplication

    QCoreApplication.setAttribute(Qt.AA_UseOpenGL)
    app = QApplication(sys.argv)
    窗口 = 主窗口()
    窗口.show()
    sys.exit(app.exec())
